Revision | Description |
1-9 | Released as versions of the Zigbee Cluster Library chapter 2 which combined the interaction model with encoding |
10 | Initial Release of this specification |
This is part of a package of Data Model specifications that are agnostic to underlying layers (encoding, message, network, transport, etc.). Each specification below may be independently maintained. This package, as a whole, shall be independently maintained as agnostic and decoupled from lower layers. This package may be referenced by inclusion in vertical protocol stack specifications.
Data Model Defines first order elements and namespace for endpoints, clusters, attributes, data types, etc.
Interaction Model Defines interactions, transactions and actions between nodes.
System Model Defines relationships that are managed between endpoints and clusters.
The original baseline for this section comes from the Zigbee Cluster Library [ZCL] Chapter 2 relating to ZCL commands and interactions. This specification addresses these gaps determined by the Data Model Tiger Team:
Multi-Element Message support
Synchronized Reporting
Reduce message types (commands & actions)
Complex data type support in all messages
Events
Interception attack
The purpose is to define a layer that abstracts interactions from other layers, including security, transport, message format & encoding. The intent is that this document will align with current cluster specifications in the ZCL (revision 8 at this time), and still support cluster evolution over time.
Term | Short | Spec Details | Description |
Wildcardable | A | this spec | able to indicate all current instances of the data |
Optional | O | Data Model | only required for some action behavior |
Quality | Qual, Q | Data Model | quality of information in an information block |
Action Flow | this spec | direction flow of actions | |
Path | this spec | a path to an element (see Path) | |
Group Path | this spec | a path with a group ID instead of node ID and endpoint number (see Group Path) | |
Wildcard Path | this spec | a path with one or more elements that are wildcards (see Wildcard Path) | |
Attribute Path | this spec | a path to an attribute data field path for attribute data (see Attribute Path) | |
Request Path | this spec | a path that may be a group or wildcard path (see Request Path) | |
Concrete Path | this spec | a path that is not a group or wildcard path (see Concrete Path) | |
Existent Path | this spec | a concrete path that exists on a server cluster (see Existent Path) |
Term | Short | Spec Details | Description |
Supported | Data Model | the indicated element is supported by the implemented instance | |
Unsupported | Data Model | the indicated element is not supported by the implemented instance |
Please see the Data Model specification.
Relationships between devices are established using data model elements and interactions defined here. Please see the System Model specification for more information.
An interaction is a sequence of transactions. A transaction is a sequence of actions.
An action is a single logical communication from a source node to one or more destination nodes. An action is conveyed by one or more messages.
The actual construction and encoding of messages is left to the message layer, which is the layer below this layer.
Examples:
A client may choose Read interactions instead of Subscribe interactions.
A client may choose to not Write or Invoke commands.
The protocol layers below this layer MAY have constraints that only support a subset of the functionality described here.
<path> ::= <target> <cluster> <cluster element>
<target> ::= <group target> | <endpoint target>
<group target> ::= <group ID>
<endpoint target> ::= <node> <endpoint>
<endpoint> ::= <wildcard endpoint> | <concrete endpoint>
<cluster> ::= <wildcard cluster> | <concrete cluster>
<cluster element> ::= <attribute> | <event> | <command>
A path is used to indicate one or more element instances in the data model. The path has the form as described in Augmented Backus–Naur:
An Attribute Path is a path indicating an <attribute>. A Command Path is a path indicating a <command>.
An Event Path is a path indicating an <event>.
A concrete path SHALL NOT have group IDs or wildcards.
A concrete path SHALL indicate a single element instance that is either:
an event with the path ending in an event ID
a command with the path ending in a command ID
an attribute with the path ending in an attribute ID
a struct field with the path ending in a field ID
a list entry with the path ending in a list entry index.
An existent path is a concrete path that indicates a single existing instance on the node indicated in the path.
A group path is a path that targets endpoints that are members of a group, using group ID, instead of indicating a node and endpoint.
A group path SHALL resolve into zero or more paths.
A group path SHALL include a group ID that indicates zero or more endpoints that are members of the group.
A group path MAY include a wildcard cluster indication and therefore also be a Wildcard Path.
A wildcard path is a path with a wildcard endpoint indication and/or wildcard cluster indication.
A wildcard path SHALL resolve into zero or more paths.
A wildcard path SHALL indicate zero or more element instances.
A wildcard path MAY include a group ID and therefore also be a Group Path.
A request path is used in actions that request data model elements.
A request path SHALL be either a concrete path, a group path or a wildcard path.
Many actions specify this process step to expand a request path into a list of existent paths. This process does not check access qualities, such as read or write access, privileges, or fabric qualities.
If the path is a Group Path, it SHALL be replaced with a list of paths, one for each endpoint that is a member of the group on the target node.
Else the list SHALL be the path.
Each path in the list that is a Wildcard Path SHALL be replaced with a complete list of existent paths, which are the permutations from substituting the wildcarded elements with existent elements.
This process produces zero or more existent paths.
An attribute path is used to indicate all or part of a cluster attribute. An attribute path may indicate deeper parts of collection type data.
Associated Information Block: AttributePathIB
If the attribute data type is a collection data type, such as a struct or list, then the path may indicate deeper nested parts of the data.
The nesting of collection data is conceptually unlimited, but the actual structure of the data is well- defined in the cluster specification. Attribute data structures are similar to data structures supported in a programming language (see Data Types in the Data Model specification). An attribute path is conceptually similar to the path or dot notation used to reference programming language data structures.
A field ID for structure data or an entry index for list data are currently the only options in an attribute path, after the attribute ID itself.
<attribute> ::= <attribute ID> <nesting level>*
<nesting level> ::= <struct field ID> | <list entry index>
The <attribute> component of an attribute path SHALL have the following form:
* <nesting level> occurs zero or more times as defined in a cluster specification.
The endpoint component is subject to wildcard expansion, as constrained in particular actions and contexts.
A command path is used to indicate a cluster command. Associated Information Block: CommandPathIB
<command> ::= <command ID>
The <command> component of a command path SHALL have the following form:
The endpoint field is wildcardable, though this may be disallowed in the various uses of the Command Path in different actions and contexts.
A event path is used to indicate a cluster event. Associated Information Block: EventPathIB
<event> ::= <event ID>
The <event> component of an event path SHALL have the following form:
Please see Event for a description of a cluster event and event data fields.
The endpoint, cluster and event ID fields are wildcardable. These are further constrained in the various uses of the Event Path in different actions and contexts.
An event path SHALL NOT be a group path.
An interaction is a sequence of one or more transactions between nodes, that occurs in the context of an accessing fabric, or no fabric.
How a fabric, or no fabric, context is established for an interaction, is not defined here.
The first transaction (of an interaction) starts with the first action from the node called the initiator. The first action destination is called the target, which is either a node or group. For the remainder of the interaction, the initiator remains the same.
An interaction may be a single transaction (e.g. Read). An interaction may be an unbounded number of transactions (e.g. Subscribe).
Interaction | Transactions | Description |
Read Interaction | Read | This interaction is a request for cluster attributes and/or event data. |
Subscribe Interaction | Subscribe, Report | This interaction subscribes to cluster attributes and/or event data. |
Interaction | Transactions | Description |
Write Interaction | Write | This interaction modifies cluster attributes. |
Invoke Interaction | Invoke | This interaction invokes cluster commands. |
A transaction is either the whole, or part of an interaction. A transaction is a sequence of one or more actions. Actions in a transaction are defined as first or following, to better describe dependencies in this specification.
The first action of a transaction SHALL be initiated by a single node.
An action in a transaction SHALL have a target destination that is either a single node, called a unicast action or a group of nodes, called groupcast action.
The transaction ID is a field present in all actions (see Common Action Information) that indicates the logical grouping of those actions.
All following actions in a transaction SHALL have the same transaction ID as the first action.
A groupcast action SHALL end a transaction and any subsequent action in the interaction SHALL NOT use the same transaction ID.
The table below lists all transactions.
Transaction | Description |
Read Transaction | This transaction is a request for cluster attribute and/or event data. |
Subscribe Transaction | This transaction creates a subscription to cluster attributes and/or events. |
Report Transaction | This transaction maintains a subscription for the Subscribe interaction. |
Write Transaction | This transaction modifies cluster attributes. |
Invoke Transaction | This transaction invokes cluster commands. |
The table below lists all actions.
Action | Description | Outgoing Message |
Status Response Action | This action is a success or error response. | Unicast |
Action | Description | Outgoing Message |
Read Request Action | This action is a request for cluster attribute data and/or events. | Unicast |
Report Data Action | This action responds to a Read Request Action or Subscribe Request Action. | Unicast |
Subscribe Request Action | This action is a request for a subscription to cluster attribute data and/or events. | Unicast |
Subscribe Response Action | This action is a response to a Subscribe Request Action. | Unicast |
Write Request Action | This action is a request to modify cluster attribute data. | Unicast | Groupcast |
Write Response Action | This action responds to a Write Request Action. | Unicast |
Invoke Request Action | This action executes a cluster command. | Unicast | Groupcast |
Invoke Response Action | This action is used to respond to an Invoke Request Action with cluster defined responses. | Unicast |
Timed Request Action | This action indicates that another action will take place within a Timed interval. | Unicast |
The message layer below this interaction layer encodes an action into one or more messages and delivers the messages to a destination. This interaction layer delivers action information to the message layer by passing action information, through some interface (not defined here). The message layer delivers action information, from an incoming message, to this interaction layer.
In all action descriptions in this specification, action information (or information blocks), refers to the information that is transferred to and from the message layer.
There is no designation of mandatory or optional for such information because the implementation is undefined. However, some information fields may be omitted, meaning the information may not be needed for all actions.
Action Field | Type | Conformance | Description |
InteractionModelRevi sion | uint8 | M | the revision number of the implemented Interaction Model specification under which the sending node was certified |
Action | action-id | M | the action |
TransactionID | trans-id | M | the transaction ID |
FabricIndex | fabric-idx | M | the accessing fabric index, based on the session used to deliver the action |
SourceNode | node-id | M | the node ID of the node that generates the action |
DestinationNode | node-id | M.a | the node ID of the destination where the action is sent |
DestinationGroup | group-id | M.a | the group ID of the destination where the action is sent |
action specific | variable | M | specific action information described in each action section |
Each generated action SHALL provide the action information above to the message layer.
If the action is the first action of a transaction, the TransactionID SHALL be a value that uniquely identifies the transaction on the source of the action.
If the action is a following action, the TransactionID SHALL be the same as the TransactionID in the first action of the transaction.
If the action is a unicast following action the DestinationNode SHALL be the SourceNode of the previous action in the transaction.
The generated action information SHALL be submitted to the message layer.
Upon receipt of this action information, the message layer SHALL construct and convey one or more messages for this action to the target.
If the message layer encounters an error that prevents the complete construction, encoding and/or conveyance of the action, then the message layer SHALL inform this layer of the error.
If the action is not completely conveyed, the action, with the associated transaction and
interaction, SHALL terminate.
If the failed action is NOT a Status Response action, this layer SHOULD, if possible, submit a Status Response action to the message layer, with a status code of FAILURE and the same TransactionID.
If the message layer receives a valid message for an action, it SHALL be delivered to this layer with the action information above.
If this layer receives a message for an action that is not expected semantically, has invalid action information, or has an error not described in this specification, a Status Response action with an INVALID_ACTION Status Code SHALL be generated as defined in Status Response Action, and the associated transaction and interaction SHALL terminate.
If during the receipt and decoding of messages for an action by the message layer, an error occurs that prevents a complete receipt of a valid action, then the message layer SHALL inform this layer of the error.
When informed of an error from a message layer, the action, with the associated transaction and interaction, SHALL terminate.
It is implementation specific whether the message layer submits logical parts of an action to this layer as it receives and processes each message. The only requirement above is that all the information, or an error, be submitted to this layer.
Global common interaction Status Codes are defined in this document in Status Codes. Cluster specific Status Codes are defined in each cluster specification.
There is no Status interaction, but an error status may be generated as part of any interaction.
This action is defined as a following action for some actions, or is generated when there is an unspecified transaction or interaction error. This action conveys status to this layer or conveys status from this layer to another node. The status indicates success or an error as part of a transaction or interaction.
Please see Common Action Behavior for behavior common to all actions. The specific action information for this action is shown below.
Action Field | Type | Conformance | Description |
Status | status | M | a status code (see Status Codes) |
This action SHALL be unicast.
This action SHALL NOT be generated in response to a groupcast.
This action SHALL be generated as specified in interactions defined here.
If this action is generated with an error Status, the current transaction and interaction SHALL be terminated.
This action SHALL only be generated with an error Status when an error occurs as a result of the immediate previous received action in the current transaction.
This action’s DestinationNode field SHALL be the immediate previous received action’s SourceNode.
This action’s TransactionID field SHALL be the immediate previous received action’s TransactionID.
If there is no well-defined Status Code for an error or exception, the Status Code of FAILURE SHALL be used.
Upon receipt of this action with a success Status Code, this layer SHALL consume the status and continue the current transaction and interaction.
Upon receipt of this action with an error Status, this layer SHALL terminate the current transaction and interaction.
Upon receipt of this action with an error Status, this layer SHALL submit the error to the layer above.
This interaction is generated when an initiator wishes to determine the value of one or more attributes or events located on a node.
Action | Action Flow | Description |
Read Request | Initiator ⇒ Target | data report request |
Report Data | Initiator ⇐ Target | response report with data |
Read Request action is the first action of a Read transaction (and interaction). Please see Common Action Behavior for behavior common to all actions. The specific action information for this action is shown below.
Action Field | Type | Conformance | Description |
AttributeRequests | list[AttributePathIB] | M | a list of zero or more request paths to cluster attribute data |
DataVersionFilters | list[DataVersionFilterIB ] | AttributeRequests | a list of zero or more cluster instance data versions |
EventRequests | list[EventPathIB] | M | a list of zero or more request paths to cluster events |
EventFilters | list[EventFilterIB] | EventRequests | a list of zero or more minimum event numbers per specific node |
FabricFiltered | bool | M | limits the data read within fabric-scoped lists to the accessing fabric |
This action SHALL be unicast.
This action SHALL be generated as the first action in a Read transaction.
A valid AttributePathIB for attribute data SHALL be one in the table Valid Read Attribute Paths.
A valid EventPathIB for an event SHALL be one in the table Valid Event Paths.
A path indicated in AttributeRequests or EventRequests SHALL NOT target a group.
If the action is not able to be executed due to insufficient resources, a Status Response SHALL be sent to the initiator with a status code of:
PATHS_EXHAUSTED if there are not enough resources to support the number of paths in the action and the number of paths in the action exceeds the number of paths that is guaranteed to be supported for a Read Interaction (see Read Interaction Limits),
BUSY in all other recoverable resource exhausted situations (e.g. if too many Read interactions are already in progress),
RESOURCE_EXHAUSTED in all other non-recoverable resource exhausted situations,
and the interaction SHALL be terminated.
Upon receipt of this action, this layer SHALL generate a Report Data action to the subscriber, as defined in Incoming Read Request and Subscribe Request Action Processing.
If the Report Data was generated successfully, it SHALL be submitted to the message layer.
This action is either a first action in a Report transaction (as part of a Subscribe interaction), or a following action to a Read Request action or Subscribe Request action.
Please see Common Action Behavior for behavior common to all actions. The specific action information for this action is shown below.
Action Field | Type | Conformance | Description |
SuppressResponse | bool | M | do not send a response to this action |
SubscriptionId | uint32 | O | a SubscriptionId only used in a Subscribe interaction |
AttributeReports | list[AttributeReportIB] | O | a list of zero or more attribute data reports |
EventReports | list[EventReportIB] | O | a list of zero or more event reports |
Each path indicated by the Report Data action SHALL be a Concrete Path.
Upon receipt of a Read Request action or Subscribe Request action, this process SHALL be followed:
Each request path in the AttributeRequests field SHALL be processed as follows:
If the path is a concrete path:
If the path indicates a node that is unsupported, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_NODE Status Code.
Else if the path indicates an endpoint that is unsupported, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_ENDPOINT Status Code.
Else if the path indicates a cluster that is unsupported, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_CLUSTER Status Code.
Else if the path indicates an attribute or attribute data field that is unsupported, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_ATTRIBUTE Status Code with the Path field indicating the first unsupported data field (not the entire attribute data path).
Else if the path indicates attribute data that is not readable, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_READ Status Code.
Else if reading from the attribute in the path requires a privilege that is not granted to access the cluster in the path, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_ACCESS Status Code.
If an AttributeStatusIB was generated, the path SHALL be discarded.
Else if the path does not conform to Valid Read Attribute Paths then:
a Status Response with the INVALID_ACTION Status Code SHALL be generated as defined in Status Response Action,
a Report Data action SHALL NOT be generated,
and this interaction and process SHALL terminate.
Else perform Request Path Expansion and process each expanded existent path as follows:
If the path indicates attribute data that is not readable, then the path SHALL be discarded.
Else if reading from the attribute in the path requires a privilege that is not granted to access the cluster in the path, then the path SHALL be discarded.
If no error free existent paths remain, then AttributeRequests are considered empty.
Else each remaining error free existent path is processed as follows:
If the DataVersionFilters field indicates DataVersionFilterIB entries with a Path field that matches the path, where all matching entries have a DataVersion field that matches the data version of the cluster instance in the path, then the path SHALL be ignored
Else If the attribute in the path is a fabric-scoped list:
If the FabricFiltered parameter is true, an AttributeDataIB SHALL be generated with the Data as a fabric-filtered list of entries, and the Path SHALL be the path being processed.
Else if the FabricFiltered parameter is false, an AttributeDataIB SHALL be generated with the Data as a list of entries, with each entry indicated as a fabric-sensitive struct, and the Path SHALL be the path being processed.
Else an AttributeDataIB SHALL be generated with the Data and Path as indicated by the path being processed.
Each AttributeDataIB or AttributeStatusIB generated from processing AttributeRequests SHALL be added to the AttributeReports action field in the Report Data action.
Each request path in the EventRequests field SHALL be processed as follows:
If the path is a concrete path:
If the path indicates a cluster event that is not supported, an EventStatusIB SHALL be generated with the UNSUPPORTED_EVENT Status Code.
Else if reading the event in the path requires a privilege that is not granted to access the cluster in the path, an EventStatusIB SHALL be generated with the UNSUPPORTED_ACCESS Status Code.
If an EventStatusIB was generated, the path SHALL be discarded.
Else if the path does not conform to Valid Event Paths then:
a Status Response with the INVALID_ACTION Status Code SHALL be generated as defined in Status Response Action,
a Report Data action SHALL NOT be generated,
and this interaction and process SHALL terminate.
Else perform Request Path Expansion and process each expanded existent path as follows:
If reading the event in the path requires a privilege that is not granted to access the cluster in the path, then the path SHALL be discarded.
If no error free existent paths remain, then EventRequests are considered empty.
Else for each unique node indicated in the remaining existent paths:
Each event record currently queued in the node, in order from lowest to highest event number, SHALL generate an EventDataIB except for any of the following:
If the node indicated matches the Node information field of an EventFilterIB from EventFilters, and the event number is less than the EventMin field in the EventFilterIB.
If the event record path does not match a path in the remaining existent event paths.
If the event record path is fabric-sensitive, and the associated fabric does not match the accessing fabric.
Each information block generated from processing EventRequests SHALL be added to the EventReports action field in the Report Data action.
If this action is in response to a Subscribe Request action,
If both AttributeRequests and EventRequests are empty
a Status Response Action with the INVALID_ACTION Status Code SHALL be sent to the initiator,
a Report Data action SHALL NOT be generated,
and the interaction and process SHALL terminate.
Else a SubscriptionId which uniquely identifies this subscription on the publisher SHALL be indicated in the Report Data action
Else the SubscriptionId SHALL be omitted.
This action SHALL be unicast.
This action MAY have an empty list of AttributeReports and/or EventReports.
This action SHALL NOT include any nested attribute data field or nested event data field that is defined as fabric-sensitive, if the associated fabric for that field does not match the accessing fabric for the interaction.
SuppressResponse MAY be set to TRUE for a Report Data action that initiates a Report transaction that conveys an empty list of AttributeReports and EventReports, otherwise:
SuppressResponse SHALL be set to TRUE for a Report Data action that is part of a Read transaction.
SuppressResponse SHALL be set to FALSE for a Report Data action that is part of a Subscribe transaction.
This action SHALL be generated as either:
part of a Read transaction in direct response to a Read Request action.
part of a Subscribe transaction in direct response to a Subscribe Request action.
part of a Subscribe interaction as the first action of each synchronized Report Transaction.
Upon receipt of this action, if SuppressResponse is TRUE, a response SHALL NOT be generated;
Otherwise a Status Response Action SHALL be generated with a status code of
SUCCESS to continue the interaction,
INVALID_SUBSCRIPTION if the action is part of a Subscribe interaction and the SubscriptionID is invalid,
FAILURE to terminate the interaction,
The Status Response Action SHALL be submitted to the message layer to deliver to the source of this action.
The Subscribe interaction is composed of these transactions:
Transaction | Description |
Subscribe | start and prime a reporting session |
Report | synchronized Report transaction |
more reports | continuous Report transactions for the life of the subscription |
This interaction allows a subscriber to create a subscription with a publisher on another node for the purposes of receiving data reports from that publisher thereafter, for the duration of the subscription. This allows the subscriber to maintain a coherent snapshot, or twin, of the subscription data as it currently exists on the publisher. The session itself is kept synchronized on both sides through the receipt of timely data reports with the intervals defined by a negotiated maximum interval subscription parameter.
This interaction is started when the initiator (or subscriber), wishes to subscribe to one or more attributes or events located on a target node (the publisher). The attribute data and events requested in the Subscribe transaction are the subscription data.
This interaction starts by creating a subscription with a Subscribe transaction, which primes the subscriber with initial subscription data. The rest of the subscription is a sequence of Report transactions initiated by the publisher as defined by parameters of the subscription. Each Report transaction in a subscription reports changes to the subscription data.
To keep the subscription alive, a Report transaction is sent from the publisher every maximum interval, or possibly more frequently.
Report transactions from the publisher are rate limited by the minimum interval subscription
parameter, as negotiated between the subscriber and publisher.
The Subscribe Request action provides boundary values (floor or ceiling) for the publisher to determine the final minimum and maximum interval parameters of the subscription. The time units for these intervals are seconds.
Each Subscribe interaction is a subscription that is identified by a Subscription ID as generated by the publisher.
The Subscribe interaction SHALL start with one Subscribe transaction followed by a periodic sequence of Report transactions (see Report Transaction).
A Report transaction SHALL be initiated by a Report Data action as part of an active subscription for a Subscribe interaction.
All Report Data actions in a Subscribe interaction SHALL have the same SubscriptionId parameter value that uniquely identifies the interaction among all subscriptions on the publisher.
Each Report transaction in a subscription SHALL report the path for each delta change in the subscription data, including the attribute data that has changed and/or the event that has occurred, since the last Report transaction, with the exception of attribute data with the Changes Omitted quality.
Each Report transaction initiated by the publisher SHALL complete successfully before another Report transaction is initiated by the publisher.
Each Report transaction SHALL NOT be initiated by the publisher until the minimum interval has expired since the last Report transaction in the subscription.
Attribute changes SHALL be delivered as soon as possible, taking into account the minimum interval.
Events SHALL be queued by default and batch delivered as soon as possible, taking into account the minimum interval, unless the 'IsUrgent' flag has been specified for a particular event path in the EventPathIB. The queueing of any urgent event SHALL force an immediate generation of reports containing all events queued leading up to (and including) the urgent event in question.
If the subscriber does not receive a Report transaction within the maximum interval from the last Report Data, the subscriber SHALL terminate the Subscribe interaction.
If a node receives a Report Data action with an inactive SubscriptionId, a Status Response action SHALL be sent with an INACTIVE_SUBSCRIPTION Status Code.
If the publisher does not receive a Status Response action with SUCCESS, in response to a Report Data action with SuppressResponse set to FALSE, the publisher SHALL terminate the Subscribe interaction.
The subscriber MAY terminate the subscription and interaction by responding with a Status Response action with an INACTIVE_SUBSCRIPTION Status Code.
The publisher MAY terminate the subscription and interaction by not generating a Report transaction within the maximum interval.
When a Subscribe interaction is terminated on the publisher or subscriber, the subscription, identified by a SubscriptionId, SHALL also be terminated.
Action | Action Flow | Description |
Subscribe Request | Initiator ⇒ Target | list of event and attribute data identifiers supported on a server cluster |
Report Data | Initiator ⇐ Target | primed published data |
Status Response | Initiator ⇒ Target | success, or otherwise an error to terminate the subscription |
Subscribe Response | Initiator ⇐ Target | provides subscription parameters |
Subscribe Request action is a first action. Please see Common Action Behavior for behavior common to all actions. The specific action information for this action is shown below.
Action Field | Type | Conformance | Description |
KeepSubscriptions | bool | M | false to terminate existing subscriptions from initiator |
MinIntervalFloor | uint16 | M | the requested minimum interval boundary floor in seconds |
MaxIntervalCeiling | uint16 | M | the requested maximum interval boundary ceiling in seconds |
AttributeRequests | list[AttributePathIB] | O | a list of zero or more request paths to cluster attribute data |
DataVersionFilters | list[DataVersionFilterIB ] | AttributeRequests | a list of zero or more cluster instance data versions |
EventRequests | list[EventPathIB] | O | a list of zero or more request paths to cluster events |
Action Field | Type | Conformance | Description |
EventFilters | list[EventFilterIB] | EventRequests | a list of zero or more minimum event numbers per specific node |
FabricFiltered | bool | M | limits the data read within fabric-scoped lists to the accessing fabric |
This action SHALL initiate a Subscribe interaction.
A Subscribe Request action SHALL be unicast from the subscriber to the publisher.
This action SHALL be generated to initiate a Subscribe interaction (see Subscribe Interaction).
This action SHALL include a requested ceiling (highest) maximum interval value as MaxIntervalCeiling.
This action SHALL include a requested floor (lowest) minimum interval value as MinIntervalFloor.
At least one attribute or event SHALL be indicated in the action.
A valid AttributePathIB SHALL be one in the table Valid Read Attribute Paths.
A valid EventPathIB SHALL be one in the table Valid Event Paths.
A path indicated in AttributeRequests or EventRequests SHALL NOT target a group.
If the action is not able to be executed due to insufficient resources, a Status Response SHALL be sent to the initiator with a status code of either:
PATHS_EXHAUSTED if there are not enough resources to support the number of paths in the action,
or RESOURCE_EXHAUSTED for any other resource insufficiency,
and the interaction SHALL be terminated.
This layer SHALL process the Subscribe Request action as defined in Incoming Read Request and Subscribe Request Action Processing.
If this interaction is not terminated by an error Status Response and KeepSubscriptions is FALSE, all existing or pending subscriptions on the publisher for this subscriber, SHALL be terminated.
Subscribe Response action is the last following action in a Subscribe Transaction. This action activates the subscription. Please see Common Action Behavior for behavior common to all actions.
The specific action information for this action is shown below (see Subscribe Interaction).
Action Field | Type | Conformance | Description |
SubscriptionId | uint32 | M | identifies the subscription |
MaxInterval | uint16 | M | the final maximum interval for the subscription in seconds |
Upon receipt of a successful Status Response action from the subscriber for the Report Data action that primes the subscription, this action SHALL be generated and submitted to the message layer to send to the subscriber.
This action SHALL be unicast.
The publisher SHALL compute an appropriate value for the MaxInterval field in the action. This
SHALL respect the following constraint: MinIntervalFloor ≤ MaxInterval ≤ MAX(SUBSCRIPTION_MAX_INTERVAL_PUBLISHER_LIMIT, MaxIntervalCeiling)
Upon sending a Subscribe Response action, the subscription, as indicated by the SubscriptionId, SHALL become active on the publisher with a min interval equal to the requested MinIntervalFloor and a max interval equal to the MaxInterval field in the response.
Upon receipt of a Subscribe Response action, the subscription, as indicated by the SubscriptionId, SHALL become active to the subscriber.
The paths to the subscription data SHALL only be error free existent paths generated from processing the Subscribe Request.
The EventFilters and DataVersionFilters fields in the Subscribe Request are one time parameters for the priming of the subscription.
Subsequent ReportData actions, as part of the subscription, SHALL include the latest:
EventNo associated with each node generating new events.
DataVersion associated with each cluster where there are data changes.
The FabricFiltered parameter from the Subscribe Request SHALL remain in effect for all data reported during the interaction.
Upon subscription activation, the minimum and maximum interval parameters SHALL take effect to determine the timing and expectation of subsequent Report transactions.
There is no Report interaction. A Report transaction is part of a Subscribe interaction. Please see Subscribe Interaction for details.
The valid Report transactions are:
Action | Action Flow | Description |
Report Data | Initiator ⇐ Target | report of data and/or events with SuppressResponse set to FALSE |
Status Response | Initiator ⇒ Target | an error ends the interaction |
Action | Action Flow | Description |
Report Data | Initiator ⇐ Target | report with no data or events with SuppressResponse set to TRUE |
This interaction is started when an initiator wishes to modify the values of one or more attributes located on one or more nodes. An optional Timed Request action defines a Timeout interval that starts at the sending of the Status Response action.
A Write interaction SHALL consist of one of the transactions shown below.
Action | Action Flow | Description |
Timed Request | Initiator ⇒ Target | time interval defined to send Write Request action |
Status Response | Initiator ⇐ Target | confirmation |
Write Request | Initiator ⇒ Target | data to modify |
Write Response | Initiator ⇐ Target | with errors or success from Write Request action |
Action | Action Flow | Description |
Write Request | Initiator ⇒ Target | data to modify |
Write Response | Initiator ⇐ Target | with errors or success from Write Request action |
If there is a preceding successful Timed Request action, the following Write Request action SHALL be received before the end of the Timeout interval.
If there is a preceding successful Timed Request action, the Timeout interval SHALL start when the Status Response action acknowledging the Timed Request action with a success code is sent.
If there is a preceding successful Timed Request action, the Write Request action SHALL be unicast.
If there is not a preceding successful Timed Request action, the Write Request action MAY be groupcast.
A client MAY choose to use a Timed Write transaction even if the attribute does not have the Timed Interaction quality.
The server SHALL support a Timed Write transaction for all writeable attributes.
This action is either the first action of the Write transaction or it follows a successful Timed Request action. Please see Common Action Behavior for behavior common to all actions. The specific action information for this action is shown below.
Action Field | Type | Conformance | Description |
SuppressResponse | bool | M | do not send a response to this action |
TimedRequest | bool | M | flag action as part of a timed write transaction |
WriteRequests | list[AttributeDataIB] | M | a list of one or more path and data tuples. |
This action SHALL be generated as the first action in a Write transaction, or following a Timed Request action and successful Status Response action.
If this action is part of a Timed Write transaction, TimedRequest SHALL be TRUE, else FALSE.
If not part of a Timed Write transaction, this action MAY be groupcast.
If this action is groupcast, SuppressResponse SHALL be TRUE.
If this action is not able to be executed because the maximum supported number of Write interactions is already in progress, then a Status Response action with the BUSY Status Code SHALL be submitted to the message layer and this interaction SHALL terminate.
If this action is part of a Timed Write transaction, and the Timeout has expired from the preceding Timed Request action, then a Status Response action with the TIMEOUT Status Code SHALL be submitted to the message layer and this interaction SHALL terminate.
If this action is part of a Timed Write transaction, and this action has TimedRequest set to FALSE, then a Status Response action with the TIMED_REQUEST_MISMATCH Status Code SHALL be submitted to the message layer and this interaction SHALL terminate.
If this action is marked with TimedRequest as TRUE but this action is not part of a Timed Write transaction (i.e. there was no corresponding Timed Request action prior to it matching the same TransactionID), then a Status Response action with the TIMED_REQUEST_MISMATCH Status Code SHALL be submitted to the message layer and this interaction SHALL terminate.
See Outgoing Write Response Action for building a Write Response action and executing the Write Request action.
If this action was unicast and SuppressResponse is FALSE, a Write Response action SHALL be generated and submitted to the message layer to send to the initiator, otherwise no Write Response SHALL be sent.
This action is a following action for a Write Request action. Please see Common Action Behavior for behavior common to all actions. The specific action information for this action is shown below.
Action Field | Type | Conformance | Description |
WriteResponses | list[AttributeStatusIB] | O | a list of zero or more concrete paths indicating errors |
This action SHALL be unicast.
Each request path in the WriteRequests field of a Write Request SHALL be processed as follows:
If the path is a concrete path:
If the path indicates a specific node that is unsupported, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_NODE Status Code.
Else if the path indicates a specific endpoint that is unsupported, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_ENDPOINT Status Code.
Else if the path indicates a specific cluster that is unsupported, an AttributeStatusIB
SHALL be generated with the UNSUPPORTED_CLUSTER Status Code.
Else if the path indicates an attribute or attribute data field that is unsupported, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_ATTRIBUTE Status Code with the Path field indicating only the path to the first unsupported data field (not the entire attribute data path).
Else if the path indicates a specific attribute data that is not writable, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_WRITE Status Code.
Else if writing to the attribute in the path requires a privilege that is not granted to access the cluster in the path, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_ACCESS Status Code.
Else if the path indicates specific attribute data that requires a Timed Write transaction to write and this action is not part of a Timed Write transaction, an AttributeStatusIB SHALL be generated with the NEEDS_TIMED_INTERACTION Status Code.
Else if the attribute in the path indicates a fabric-scoped list and there is no accessing fabric, an AttributeStatusIB SHALL be generated with the UNSUPPORTED_ACCESS Status Code, with the Path field indicating only the path to the attribute.
Else if the DataVersion field of the AttributeDataIB is present and does not match the data version of the indicated cluster instance, an AttributeStatusIB SHALL be generated with the DATA_VERSION_MISMATCH Status Code.
If the above processing generated an AttributeStatusIB, the path SHALL be discarded.
Else if the path does not conform to Valid Write Attribute Paths then:
a Status Response with the INVALID_ACTION Status Code SHALL be generated as defined in Status Response Action,
a Write Response action SHALL NOT be generated,
and this interaction and process SHALL terminate.
Else perform Request Path Expansion and process each expanded existent path as follows:
If the path indicates attribute data that is not writable, then the path SHALL be discarded.
If writing to the attribute in the path requires a privilege that is not granted to access the cluster in the path, then the path SHALL be discarded.
Else if the path indicates specific attribute data that requires a Timed Write transaction to write and this action is not part of a Timed Write transaction, then the path SHALL be discarded.
Each error free existent path that remains from path processing SHALL be processed, in the order conveyed and expanded by this action, as follows:
If the path indicates a fabric-scoped list or list entry, it SHALL be processed as a fabric- filtered list of fabric-scoped structs.
Each data field indicated by the path, SHALL be processed in the order conveyed as follows:
If a data field is not within the constraints defined by the cluster specification, an AttributeStatusIB SHALL be generated with the CONSTRAINT_ERROR Status Code, with
the Path field duplicating the path.
Otherwise, the data field SHALL be changed to the data indicated with the path.
Each AttributeStatusIB generated from processing the WriteRequests field of the Write Request action, SHALL be added to the WriteResponses action field of the Write Response action, which may result in an empty WriteResponses field.
An empty WriteResponses field of the Write Response action SHALL indicate no errors from the Write Request action.
Upon receipt of this action, the action information SHALL be submitted to the layer above.
This action is a first action of a transaction. The specific action information for this action is shown below.
This action informs the receiver that another action will be sent in the same direction, within the same transaction, and within a specified Timeout interval. The Timeout interval SHALL start when the Status Response action acknowledging the Timed Request action with a success code is sent.
Action Field | Type | Conformance | Description |
Timeout | uint16 | M | an interval, in milliseconds, to expect a following action |
This action SHALL be generated as an optional first action in a Write or Invoke transaction.
This action SHALL be unicast.
Upon receipt of this action, this layer SHALL construct and send a Status Response action with SUCCESS to the initiator.
This layer SHALL expect a Write Request or Invoke Request action within Timeout milliseconds of sending the Status Response action.
This interaction is generated when a device wishes to invoke one or more cluster specific commands on one or more nodes. Cluster commands are defined as either client to server or server to client. Invoke Request action SHALL support group paths and SHOULD support wildcard paths. Invoke Response action does not support wildcard paths.
The Invoke interaction SHALL consist of one of the Invoke transactions shown below
Action | Action Flow | Description |
Timed Request | Initiator ⇒ Target | time interval defined to send Invoke Request action |
Status Response | Initiator ⇐ Target | confirmation |
Invoke Request | Initiator ⇒ Target | commands to invoke |
Invoke Response | Initiator ⇐ Target | response(s) defined by the cluster specification |
… | Initiator ⇐⇒ Target | subsequent response(s) defined by the cluster specification |
Action | Action Flow | Description |
Invoke Request | Initiator ⇒ Target | commands to invoke |
Invoke Response | Initiator ⇐ Target | response(s) defined by the cluster specification |
… | Initiator ⇐⇒ Target | subsequent response(s) defined by the cluster specification |
A client MAY choose to use a Timed Invoke transaction even if the command does not have the Timed Interaction quality.
The server SHALL support a Timed Invoke transaction for all commands.
This action SHALL be generated as the first action in an Invoke transaction, or following a Timed Request action and successful Status Response action.
If there is a preceding successful Timed Request action, the following Invoke Request action SHALL be received before the end of the Timeout interval.
If there is a preceding successful Timed Request action, the Timeout interval SHALL start when the Status Response action acknowledging the Timed Request action with a success code is sent.
Each Invoke Request and Invoke Response action in a Timed Invoke transaction SHALL be unicast.
If not part of a Timed Invoke transaction, this action MAY be groupcast.
If a cluster command is defined to be invoked as the result of a groupcast, the command SHALL be invoked with an Invoke Request action which SHALL start a new transaction.
Each path in an Invoke Request or Invoke Response action SHALL indicate a server cluster.
Invoke Request action is either the first action of the Invoke transaction or it follows a successful Timed Request action. Please see Common Action Behavior for behavior common to all actions. The specific action information for this action is shown below.
Action Field | Type | Conformance | Description |
SuppressResponse | bool | M | do not send a response to this action |
TimedRequest | bool | M | flag action as part of a timed invoke transaction |
InvokeRequests | list[CommandDataIB] | M | cluster command(s) |
This action SHALL be generated as the first action in an Invoke transaction, or following a Timed Request action and successful Status Response action.
If this action is part of a Timed Invoke transaction, TimedRequest SHALL be TRUE, else FALSE.
A valid CommandDataIB SHALL be one in the table Valid Command Paths.
A path indicated in InvokeRequests MAY target a group.
If this action is part of a Timed Invoke transaction, and the Timeout has expired from the preceding Timed Request action, then a Status Response action with the TIMEOUT Status Code SHALL be submitted to the message layer and this interaction SHALL terminate.
If this action is part of a Timed Invoke transaction, and this action has TimedRequest set to FALSE, then a Status Response action with the TIMED_REQUEST_MISMATCH Status Code SHALL be submitted to the message layer and this interaction SHALL terminate.
If this action is marked with TimedRequest as TRUE, but this action is not part of a Timed Invoke transaction (i.e. there was no immediately previous Timed Invoke action), then a Status Response action with the TIMED_REQUEST_MISMATCH Status Code SHALL be submitted to the message layer and this interaction SHALL terminate.
Each request path in the InvokeRequests field SHALL be processed as follows:
If the path is a concrete path:
If the path indicates a node that is unsupported, a CommandStatusIB SHALL be generated with the UNSUPPORTED_NODE Status Code.
Else if the path indicates an endpoint that is unsupported, a CommandStatusIB SHALL be generated with the UNSUPPORTED_ENDPOINT Status Code.
Else if the path indicates a cluster that is unsupported, a CommandStatusIB SHALL be generated with the UNSUPPORTED_CLUSTER Status Code.
Else if the path indicates a command that is unsupported, a CommandStatusIB SHALL be generated with the UNSUPPORTED_COMMAND Status Code.
Else if invoking the command in the path requires a privilege that is not granted to access the cluster in the path, a CommandStatusIB SHALL be generated with the UNSUPPORTED_ACCESS Status Code.
Else if the command in the path is fabric-scoped and there is no accessing fabric, a CommandStatusIB SHALL be generated with the UNSUPPORTED_ACCESS Status Code.
Else if the command in the path requires a Timed Invoke transaction to invoke and this action is not part of a Timed Invoke transaction, a CommandStatusIB SHALL be generated with the NEEDS_TIMED_INTERACTION Status Code.
Each generated CommandStatusIB CommandPath field SHALL be a duplicate of the concrete path processed, including the command ID of the original concrete path.
Else if the path does not conform to Valid Command Paths then:
a Status Response with the INVALID_ACTION Status Code SHALL be generated as defined in Status Response Action,
an Invoke Response action SHALL NOT be generated,
and this interaction and process SHALL terminate.
Else perform Request Path Expansion and process each expanded existent path as follows:
If invoking the command in the path requires a privilege that is not granted for the cluster in the path, then the path SHALL be discarded.
Else if the command in the path is fabric-scoped and there is no accessing fabric, then the path SHALL be discarded.
Else if the command in the path requires a Timed Invoke transaction to invoke and this action is not part of a Timed Invoke transaction, then the path SHALL be discarded.
Each command in the remaining and error-free concrete command paths SHALL be executed, as defined in Invoke Execution, in the same order as conveyed and expanded:
Invoke Execution
The command SHALL be executed as defined in the cluster specification, and the following applies:
For each data field in CommandFields:
If a mandatory data field is missing, or incoming data cannot be mapped to the expected data type for a field, a CommandStatusIB SHALL be generated with an error status of INVALID_COMMAND, even if the cluster defines another type of response.
If a data field violates expected constraints, a CommandStatusIB SHOULD be generated with an error status of CONSTRAINT_ERROR.
If the cluster specification defines a following command in response to the command, a CommandDataIB SHALL be generated for the following command with these fields:
CommandFields defined for the following command
ClusterPath field of the CommandPath field that is a duplicate of the command path
processed, up to the cluster ID
Command field of the CommandPath field that is the command ID of the following command
Else if the cluster specification defines a success or error status as a response (sometimes specified as a Default Response), a CommandStatusIB SHALL be generated with these fields:
CommandPath that is a duplicate of the concrete command path processed
After all valid commands complete execution, Invoke Response Generation SHALL be performed.
Invoke Response action is a following action for an Invoke Request action. Please see Common Action Behavior for behavior common to all actions. The specific action information for this action is shown below.
Action Field | Type | Conformance | Description |
SuppressResponse | bool | M | do not send a response to this action |
InvokeResponses | list[InvokeResponseIB] | M | command response or status |
This action SHALL be generated in response to an Invoke Request action or Invoke Response action, after all valid commands are executed.
A valid InvokeResponseIB SHALL only indicate concrete path.
Invoke Response Generation
If the previous action in this transaction action is groupcast, this process and transaction terminate with no response.
Else if SuppressResponse is FALSE, or a CommandDataIB was generated, an Invoke Response action SHALL be generated as follows:
Each generated CommandStatusIB and CommandDataIB SHALL be included in an InvokeResponseIB in the InvokeResponses action field.
An Invoke Response action SHALL be submitted to the message layer to send to the source of the previous action.
Upon receipt of this action, each entry in InvokeResponses SHALL be processed, in order, as follows:
If the entry is a CommandStatusIB, it SHALL be submitted to the layer above.
Else if the response is a CommandDataIB:
If the ClusterPath field of the CommandPath field does not duplicate or match a wildcard of one of the paths in the previous action of the interaction, the entry SHALL be discarded.
Else if the command ID value of the Command field of the CommandPath field is not expected by the cluster instance, the entry SHALL be discarded.
Else the CommandDataIB SHALL be executed in Invoke Execution.
After all commands complete execution Invoke Response Generation SHALL be performed.
Shown below are common information blocks used to submit actions to, and receive actions from, the message layer.
Logically for this specification, the Node or Group SHALL be present in all paths.
When an outgoing path indicates the same Node or Group as the action target, the message layer MAY optimize the path by removing Node or Group.
When an incoming path does not indicate a Node or Group, the message layer SHALL add the action target (Node or Group) to the path.
See Path for more information.
Path Field | Type | Quality | Conformance |
Group | group-id | !Endpoint | |
Node | node-id | !Group | |
Endpoint | endpoint-no | A | !Group |
Cluster | cluster-id | A | M |
An attribute path supports nesting levels deeper than the attribute with the NestedPath field below. The NestedPath indicates zero or more nesting levels to establish the nesting depth of the attribute path.
An attribute path MAY indicate data at any nesting depth in the attribute data.
If the Attribute is indicated as a wildcard then the path SHALL indicate all attributes of the cluster.
If the Attribute is indicated as a wildcard, then NestedPath SHALL be empty.
If the final nesting level in an attribute path indicates a collection data type, then the path SHALL indicate all collection data, plus any deeper nested data as part of the collection.
Path Field | Type | Quality | Conformance |
Cluster | ClusterPathIB | M | |
Attribute | attrib-id | A | M |
NestedPath | list[NestingLevelIB] | Attribute != wildcard |
This defines a deeper nesting level of an attribute path to collection data, such as a struct field, or list entry.
Path Field | Type | Quality | Conformance |
FieldID | field-id | A | M.a |
ListIndex | entry-idx | A | M.a |
This table is valid for AttributePathIB for a Read Request action or a Subscribe Request action. See AttributePathIB for more conformance restrictions.
The table defines valid attribute data paths including combinations with wildcards, non-group (node & endpoint), and group paths. A blank entry means the element does not exist in the path.
Node | Endpoint | Group | Cluster | Attribute | Attribute Data Requested |
Specific | Wildcard | Wildcard | Wildcard | all attribute data from all clusters on all endpoints on a specific node | |
Specific | Wildcard | Wildcard | Specific | specific global attribute data or field for all clusters on all endpoints on a specific node (e.g. ClusterRevisio n) |
Node | Endpoint | Group | Cluster | Attribute | Attribute Data Requested |
Specific | Wildcard | Specific | Wildcard | all attribute data from a specific cluster on all endpoints on a specific node (e.g. Descriptor cluster) | |
Specific | Wildcard | Specific | Specific | a specific attribute data or field from a specific cluster on all endpoints on a specific node (e.g. Descriptor cluster) | |
Specific | Specific | Wildcard | Wildcard | all attribute data from all clusters on a specific endpoint on a specific node | |
Specific | Specific | Wildcard | Specific | a specific global attribute data or field for all clusters on a specific endpoint on a specific node (e.g. ClusterRevisio n) | |
Specific | Specific | Specific | Wildcard | all attribute data from a specific cluster on a specific endpoint a specific node |
Node | Endpoint | Group | Cluster | Attribute | Attribute Data Requested |
Specific | Specific | Specific | Specific | a specific attribute data or field from a specific cluster on a specific endpoint on a specific node | |
Specific | Wildcard | Wildcard | all attribute data from all clusters on a specific group of zero or more endpoints on each node | ||
Specific | Wildcard | Specific | a specific global attribute data or field for all clusters on a specific group of zero or more endpoints on each node | ||
Specific | Specific | Wildcard | all attribute data from a specific cluster on a specific group of zero or more endpoints on each node | ||
Specific | Specific | Specific | a specific attribute data or field from a specific cluster on a specific group of zero or more endpoints on each node |
This table is valid for Path field of a AttributeDataIB for a Write Request action. See AttributeDataIB and AttributePathIB for more conformance restrictions.
The table defines valid attribute data paths including combinations with wildcards, non-group (node & endpoint), and group paths. A blank entry means the element does not exist in the path.
Node | Endpoint | Group | Cluster | Attribute | Attribute Data Requested |
Specific | Wildcard | Specific | Specific | a specific attribute data or field from a specific cluster on all endpoints on a specific node (e.g. Descriptor cluster) | |
Specific | Specific | Specific | Specific | a specific attribute data or field from a specific cluster on a specific endpoint on a specific node | |
Specific | Specific | Specific | a specific attribute data or field from a specific cluster on a specific group of zero or more endpoints on each node |
This is used in Write Request and Report Data actions.
Info Field | Type | Quality | Conformance |
DataVersion | data-ver | desc | |
Change | enum8 | desc | |
Path | AttributePathIB | M | |
Data | desc | M |
DataVersion
This field SHALL NOT be present for a group or wildcard path.
This field MAY be present for a path in a Write Request action.
This field SHALL be present for a path in a Report Data action.
Change
This field indicates a change to a list for a write interaction, or as reported for a read or subscribe interaction.
This field SHALL only be present if the data type is a list entry index or list data type.
The list change SHALL be in the context of a fabric-filtered list, if fabric-filtering is enabled or required.
This field SHALL be one of the values defined in the table below.
Name | Description |
REPLACE | This indicates the entire list changing to another list. |
ADD | This adds one or more entries without imposing a specific order. |
DELETE | This deletes a particular entry. |
MODIFY | This modifies a particular entry. |
This Change value SHALL indicate replacing the entire list.
This Change value SHALL only be used when the last nesting level of the Path field indicates a list (Attribute or FieldID).
The data type of the AttributeDataIB Data field SHALL be list.
The Data field MAY be an empty list which effectively deletes all entries from the list.
This Change value SHALL indicate adding one or more entries to the list, in an order determined by the server.
This Change value SHALL only be used when the last nesting level of the Path field indicates a list (Attribute or FieldID).
The data type of the AttributeDataIB Data field SHALL be list.
This Change value SHALL indicate deleting one particular entry.
This Change value SHALL only be used when the last nesting level of the Path field indicates a
list entry index (ListIndex).
The data type of the AttributeDataIB Data field SHALL be the data type of the list entry.
This Change value SHALL indicate modifying one particular entry.
This Change value SHALL only be used when the last nesting level of the Path field indicates a list entry index (ListIndex).
The data type of the AttributeDataIB Data field SHALL be the data type of the list entry.
Path
See AttributePathIB.
Data
The data type of this field SHALL be the data type of the data indicated by the Path field.
If the final nesting level indicated by the Path is an list entry index, the data type SHALL be the data type of the list.
Info Field | Type | Quality | Conformance |
AttributeStatus | AttributeStatusIB | M.a | |
AttributeData | AttributeDataIB | M.a |
Only one of the above two fields SHALL be present.
Info Field | Type | Quality | Conformance |
Path | ClusterPathIB | M | |
DataVersion | data-ver | M |
The Path field SHALL indicate a concrete path.
Info Field | Type | Quality | Conformance |
Node | node-id | M | |
EventMin | event-no | M |
Path Field | Type | Quality | Conformance |
Path | ClusterPathIB | M | |
Event | event-id | O | |
IsUrgent | bool | O |
This table is valid for EventPathIB. The table defines valid event paths including combinations with wildcards, but not group paths.
Node | Endpoint | Cluster | Event | Event(s) Requested |
Specific | Wildcard | Wildcard | Wildcard | all events from all clusters on all endpoints on a specific node |
Specific | Wildcard | Specific | Wildcard | all events from a specific cluster on all endpoints on a specific node (e.g. Descriptor cluster) |
Specific | Wildcard | Specific | Specific | a specific event from a specific cluster on all endpoints on a specific node (e.g. Descriptor cluster) |
Specific | Specific | Wildcard | Wildcard | all events from all clusters on a specific endpoint on a specific node |
Specific | Specific | Specific | Wildcard | all events from a specific cluster on a specific endpoint on a specific node |
Specific | Specific | Specific | Specific | a specific event from a specific cluster on a specific endpoint on a specific node |
Info Field | Type | Quality | Conformance |
Path | EventPathIB | M | |
EventNumber | event-no | M | |
Priority | priority | M | |
EpochTimeStamp | epoch-us | M.a | |
SystemTimeStamp | systime-us | M.a | |
Data | variable | O |
The Path field SHALL indicate an existent path.
Info Field | Type | Quality | Conformance |
EventStatus | EventStatusIB | M.a | |
EventData | EventDataIB | M.a |
Only one of the above fields SHALL be present.
Path Field | Type | Quality | Conformance |
ClusterPath | ClusterPathIB | M | |
Command | command-id | M |
This table is valid for CommandPathIB. The table defines valid command paths including combinations with wildcards, non-group (node & endpoint), and group paths. A blank entry means the element does not exist in the path.
Node | Endpoint | Group | Cluster | Command | Command(s) Requested |
Specific | Wildcard | Specific | Specific | a specific command from a specific cluster on all endpoints on a specific node |
Node | Endpoint | Group | Cluster | Command | Command(s) Requested |
Specific | Specific | Specific | Specific | a specific command from a specific cluster on a specific endpoint on a specific node | |
Specific | Specific | Specific | a specific command from a specific cluster on a specific group of zero or more endpoints on each node |
Info Field | Type | Quality | Conformance |
CommandPath | CommandPathIB | M | |
CommandFields | variable | M |
This is used in response to an invoked command.
Info Field | Type | Quality | Conformance |
Command | CommandDataIB | M.a | |
Status | CommandStatusIB | M.a |
Only one of the above fields SHALL be present.
The Path field in CommandDataIB and CommandStatusIB SHALL indicate a concrete path.
This is used to indicate an invalid command, or an error accessing the command.
Info Field | Type | Quality | Conformance |
CommandPath | CommandPathIB | M | |
Status | StatusIB | M |
The Path field SHALL indicate a concrete path.
This is used to indicate an invalid event, or an error accessing the event.
Info Field | Type | Quality | Conformance |
Path | EventPathIB | M | |
Status | StatusIB | M |
The Path field SHALL indicate a concrete path.
This is used to indicate an invalid attribute data request path, or an error accessing the data.
Info Field | Type | Quality | Conformance |
Path | AttributePathIB | M | |
Status | StatusIB | M |
The Path field SHALL indicate a concrete path.
This is used to respond with errors or success to actions. A success Status field is valid for every layer. A non-success Status field is either defined in this layer, or generated and recognized by another layer. ClusterStatus is defined in a cluster specification.
Please see Status Codes for valid values for Status.
Info Field | Type | Quality | Conformance |
Status | status | M | |
ClusterStatus | status | O |
Status Field
This is the one of the common status code values defined in Status Code Table.
ClusterStatus Field
ClusterStatus values are defined in a cluster specification.
The table below lists global status codes for the Interaction Model. These MAY be used by interaction model processing of actions and as common status codes for cluster specifications. All values not defined here SHALL be reserved (per general conventions). Cluster specifications that
wish to communicate a status not defined in this table MAY use a cluster-specific status code as described in Status Codes.
Status Code | Value | Description |
SUCCESS | 0x00 | Operation was successful. |
FAILURE | 0x01 | Operation was not successful. |
INVALID_SUBSCRIPTION | 0x7D | Subscription ID is not active. |
UNSUPPORTED_ACCESS NOT_AUTHORIZED | 0x7E | The sender of the action or command does not have authorization or access. NOT_AUTHORIZED is an obsolete name of this error code. |
UNSUPPORTED_ENDPOINT | 0x7F | The endpoint indicated is unsupported on the node. |
INVALID_ACTION | 0x80 | The action is malformed, has missing fields, or fields with invalid values. Action not carried out. |
UNSUPPORTED_COMMAND UNSUP_COMMAND | 0x81 | The indicated command ID is not supported on the cluster instance. Command not carried out. UNSUP_COMMAND is an obsolete name for this error code. |
reserved | 0x82 | Deprecated: use UNSUPPORTED_COMMAND |
reserved | 0x83 | Deprecated: use UNSUPPORTED_COMMAND |
reserved | 0x84 | Deprecated: use UNSUPPORTED_COMMAND |
INVALID_COMMAND INVALID_FIELD | 0x85 | The cluster command is malformed, has missing fields, or fields with invalid values. Command not carried out. INVALID_FIELD is an obsolete name for this error code. |
UNSUPPORTED_ATTRIBUTE | 0x86 | The indicated attribute ID, field ID or list entry does not exist for an attribute path. |
Status Code | Value | Description |
CONSTRAINT_ERROR INVALID_VALUE | 0x87 | Out of range error or set to a reserved value. Attribute keeps its old value. Note that an attribute value may be out of range if an attribute is related to another, e.g. with minimum and maximum attributes. See the individual attribute descriptions for specific details. INVALID_VALUE is an obsolete name for this error code. |
UNSUPPORTED_WRITE READ_ONLY | 0x88 | Attempt to write a read-only attribute. READ_ONLY is an obsolete name for this error code. |
RESOURCE_EXHAUSTED INSUFFICIENT_SPACE | 0x89 | An action or operation failed due to insufficient available resources. INSUFFICIENT_SPACE is an obsolete name for this error code. |
reserved | 0x8A | Legacy cluster specification error status code: use SUCCESS |
NOT_FOUND | 0x8B | The indicated data field or entry could not be found. |
UNREPORTABLE_ATTRIBUTE | 0x8C | Reports cannot be issued for this attribute. |
INVALID_DATA_TYPE | 0x8D | The data type indicated is undefined or invalid for the indicated data field. Command or action not carried out. |
reserved | 0x8E | Legacy cluster specification error status code: use UNSUPPORTED_ATTRIBUTE. |
UNSUPPORTED_READ | 0x8F | Attempt to read a write-only attribute. |
reserved | 0x90 | Deprecated: use FAILURE |
reserved | 0x91 | Deprecated: use FAILURE |
DATA_VERSION_MISMATCH | 0x92 | Cluster instance data version did not match request path |
Status Code | Value | Description |
reserved | 0x93 | Legacy cluster specification error status code: use FAILURE |
TIMEOUT | 0x94 | The transaction was aborted due to time being exceeded. |
reserved | 0x95 | ZCL OTA Upgrade cluster specific error status code |
reserved | 0x96 | ZCL OTA Upgrade cluster specific error status code. |
reserved | 0x97 | ZCL OTA Upgrade cluster specific error status code. |
reserved | 0x98 | ZCL OTA Upgrade cluster specific error status code. |
reserved | 0x99 | ZCL OTA Upgrade cluster specific error status code. |
reserved | 0x9A | ZCL OTA Upgrade cluster specific error status code. |
UNSUPPORTED_NODE | 0x9B | The node ID indicated is not supported on the node. |
BUSY | 0x9C | The receiver is busy processing another action that prevents the execution of the incoming action. |
reserved | 0xC0 | Deprecated: use FAILURE |
reserved | 0xC1 | Deprecated: use FAILURE |
reserved | 0xC2 | Deprecated: use FAILURE |
UNSUPPORTED_CLUSTER | 0xC3 | The cluster indicated is not supported on the endpoint. |
reserved | 0xC4 | Deprecated: use SUCCESS |
NO_UPSTREAM_SUBSCRIPTIO N | 0xC5 | Used by proxies to convey to clients the lack of an upstream subscription to a source. |
NEEDS_TIMED_INTERACTION | 0xC6 | A Untimed Write or Untimed Invoke interaction was used for an attribute or command that requires a Timed Write or Timed Invoke. |
UNSUPPORTED_EVENT | 0xC7 | The indicated event ID is not supported on the cluster instance. |
Status Code | Value | Description |
PATHS_EXHAUSTED | 0xC8 | The receiver has insufficient resources to support the specified number of paths in the request |
TIMED_REQUEST_MISMATCH | 0xC9 | A request with TimedRequest field set to TRUE was issued outside a Timed transaction or a request with TimedRequest set to FALSE was issued inside a Timed transaction. |
FAILSAFE_REQUIRED | 0xCA | A request requiring a Fail-safe context was invoked without the Fail-Safe context. |